package com.tutu.controller.activity;



import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.hyphenate.chat.EMClient;
import com.hyphenate.exceptions.HyphenateException;
import com.tutu.R;
import com.tutu.constant.AddConst;

import com.tutu.model.Model;
import com.tutu.model.bean.UserInfo;


/**
 * @author  图图 2020/10/11
 *
 * 添加联系人页面
 */
public class AddContcatActivity extends Activity {
    // 显示当前账号
    private TextView tv_add_showaccount;
    // 查找
    private TextView tv_add_find;
    // 搜索框
    private EditText et_add_name;
    // 显示搜索结果
    private RelativeLayout rl_add;
    // 结果名称
    private TextView tv_add_name;
    // 添加按钮
    private Button bt_add_add;
    // 用户
    private UserInfo userInfo;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contcat);
        // 初始化
        initView();
        // 初始化数据
        initData();
        // 控件业务处理
        initListener();
    }

    /**
     * 控件业务逻辑处理
     */
    private void initListener() {
        // 查找按钮点击事件
        tv_add_find.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                search();
            }
        });

        // 添加按钮点击事件
        bt_add_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add();
            }
        });
    }

    /**
     * 查找好友
     */
    private void search() {
        // 1.获取用户名称
        String addName = et_add_name.getText().toString();
        // 2.校验数据
        if(TextUtils.isEmpty(addName)){
            Toast.makeText(AddContcatActivity.this, AddConst.USERNAME_IS_NULL,Toast.LENGTH_SHORT).show();
            return;
        }
        if(!addName.matches(AddConst.REGEXNAME)){
            Toast.makeText(AddContcatActivity.this, AddConst.USERNAME_IS_ILLEGAL,Toast.LENGTH_SHORT).show();
            return;
        }
        // 3.去服务器校验用户是否存在
        Model.getInstance().getGlobalThreadPool().execute(new Runnable() {
            @Override
            public void run() {
                // 服务器查找用户是否存在
                userInfo = new UserInfo(addName);
                // 更新UI显示
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        rl_add.setVisibility(View.VISIBLE);
                        tv_add_name.setText(userInfo.getUsername());
                    }
                });
            }
        });

    }

    /**
     * 添加好友
     */
    private void add() {

        Model.getInstance().getGlobalThreadPool().execute(new Runnable() {
            @Override
            public void run() {
                // 去环信服务器添加好友
                try {
                    EMClient.getInstance().contactManager().addContact(userInfo.getUsername(),AddConst.ADD_REASON);
                    // 消息发送成功，更新UI
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(AddContcatActivity.this, AddConst.SUCCESS,Toast.LENGTH_SHORT).show();
                            return;
                        }
                    });
                } catch (HyphenateException e) {
                    e.printStackTrace();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(AddContcatActivity.this, AddConst.ERROR + e.toString(),Toast.LENGTH_SHORT).show();
                            return;
                        }
                    });

                }
            }
        });
    }

    /**
     * 初始化数据
     */
    private void initData() {
        tv_add_showaccount.setText("我的账号：" + EMClient.getInstance().getCurrentUser());
    }

    /**
     * 初始化控件
     */
    private void initView() {
        tv_add_showaccount = (TextView)findViewById(R.id.tv_add_showaccount);
        tv_add_find = (TextView)findViewById(R.id.tv_add_find);
        et_add_name = (EditText)findViewById(R.id.et_add_name);
        rl_add = (RelativeLayout)findViewById(R.id.rl_add);
        tv_add_name = (TextView)findViewById(R.id.tv_add_name);
        bt_add_add = (Button)findViewById(R.id.bt_add_add);
    }
}
